Steps: make the no-motion empty state WHOOP 5/MG-aware (#107)#116
Merged
Conversation
The Steps estimate needs the strap's banked MOTION. When there's none, the sheet
showed a WHOOP-4.0-framed prompt ("let your strap sync its history") and a hardcoded
"WHOOP 4.0" subtitle. On a 5/MG that advice is futile: a 5/MG only streams motion
once the experimental deep-data unlock (R22) is on, so it never syncs motion and the
screen stays stuck — which is exactly the report (imports don't supply strap motion
either: WHOOP CSV has no motion, Apple Health is the phone-step calibration target).
Family-aware now (StepsCalibrationSheet):
- Subtitle shows "WHOOP 5.0 / MG · motion → steps" on a 5/MG.
- The no-motion note: on a 5/MG with deep-data OFF it says to turn on
Settings → "Unlock WHOOP 5/MG deep data (R22)", reconnect, and let motion sync
(and that imports don't provide strap motion); with deep-data ON it's the normal
"let it sync"; a 4.0 keeps the original copy.
Messaging only — no data-path change. Strand target (can't build on WSL); a testing
build verifies the Swift compiles.
…view) The sheet's explainer still said "A WHOOP 4.0 doesn't transmit steps" — wrong on a 5/MG (it has a motion counter; it streams motion, not a step count, and only with deep data on). Family-aware now, completing the 5/MG sweep of the sheet alongside the subtitle + no-motion note. Messaging only.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #107 — on a WHOOP MG, the Steps (estimated) screen is stuck on the "collecting data" prompt despite WHOOP CSV + Apple Health imports.
Root cause
The Steps estimate builds from the strap's banked motion (steps ≈ k · motion, calibrated to phone steps). With no motion, the sheet shows a "no motion yet" note — but that note (and the sheet's subtitle) were written for a WHOOP 4.0, which streams motion automatically. A 5/MG streams only live HR to a fresh app; motion + history arrive only after the experimental deep-data unlock (R22) is enabled (
PuffinExperiment.deepDataEnabled, #174 — the app says as much in Settings). So on a 5/MG without that toggle, no motion is ever banked, and the screen stays stuck. The prompt's advice ("let your strap sync its history") is futile there. Imports can't substitute: WHOOP CSV export carries no motion, and Apple Health provides phone steps (the calibration target), not strap motion.Fix (messaging only — no data-path change)
StepsCalibrationSheetis now family-aware:Mirrors the #37 precedent (explain why the steps screen is empty rather than looking broken), extended to the 5/MG case.
Testing
Strand (iOS/macOS) target — can't build on WSL; a testing build verifies the Swift compiles. Reply to the reporter will confirm whether deep-data is enabled and request a Steps-profile export (its
[steps] … have=0line + strap-state block confirm zero motion / whether motion is flowing).File:
Strand/Screens/SettingsView.swift.